package com.qr.mapper;

import com.qr.dto.SuggestDTO;
import com.qr.dto.UserSubmitDTO;
import com.qr.entity.FeedBack;
import com.qr.entity.Move;
import com.qr.entity.UserExercise;
import com.qr.vo.NavVO;
import com.qr.vo.TimeVO;
import org.apache.ibatis.annotations.*;

import java.time.LocalDate;
import java.util.Date;
import java.util.List;

@Mapper
public interface MoveMapper {
    List<NavVO> getNavItem();

    @Select("select * from exercise_move where exercise_area_id = #{id}")
    List<Move> getCardItem(Long id);


    /**
     * 查询数据
     * @param userExercise
     * @return
     */
    List<UserExercise> list(UserExercise userExercise);

    /**
     * 插入一条数据
     * @param userExercise
     */
    void insert(UserExercise userExercise);

    /**
     * 更新group
     * @param userExercise1
     */
    @Update("update user_exercise set `group` = #{group} where id = #{id}")
    void updateGroupById(UserExercise userExercise1);

    /**
     * 获取当天的动作数据
     * @param userId
     * @param date
     * @return
     */
    @Select("select * from user_exercise where user_id = #{userId} and create_date = #{date}")
    List<UserExercise> getDataByDate(Long userId, String date);

    /**
     * group为0删除数据
     * @param id
     */
    @Delete("delete from user_exercise where id = #{id}")
    void delete(Long id);


    /**
     * 更新数据
     * @param userExercise
     */
    void updateData(UserExercise userExercise);

    /**
     * 获取选择时间内的每个动作的次数
     * @param beginDate
     * @param endDate
     */
    List<TimeVO> getTimesByDate(LocalDate beginDate, LocalDate endDate, Long userId);

    /**
     * 获取选择时间内的对应部位的每个动作的次数
     * @param id
     * @param beginDate
     * @param endDate
     */
    List<TimeVO> getMoveTimesByDate(Integer id, LocalDate beginDate, LocalDate endDate, Long userId);

    /**
     * 提交建议
     * @param feedBack
     */
    void insertSuggest(FeedBack feedBack);

    /**
     * 获取范围内的数据
     * @param startDate
     * @param endDate
     */

    List<UserExercise> getDataByDateRange(LocalDate startDate, LocalDate endDate, Long userId);
}
